Webservices mit C++: Routing von Anfragen

Ein exemplarischer Webservice soll ein zentral gesteuertes Routing von Anfragen lernen. Wir zeigen, wie das geht.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 12 Kommentare lesen
!!! ein Motiv, das die Idee mit dem Stellwerk aufgreift. Dall-E hat auf Prompts wie "rail tracks that diverge into a train station where they end, seen from bird's perspective, single rail in foreground, train station in background, futuristic neon lit drawing." bislang nur Mist ausgespuckt. uwei wird das sicher mit Midjourney richten. Oder mit einer Illu …,

AVR SCR, stock.adobe.com | Bearbeitung: c‘t

Lesezeit: 8 Min.
Von
  • Oliver Lau
Inhaltsverzeichnis

Dem Beispiel-Webservice aus den beiden vorangehenden Teilen dieser Serie (Teil 1, Teil 2) mangelt es ein wenig an Übersichtlichkeit, obwohl er nur ein paar Hundert Zeilen umfasst. Es fängt damit an, dass er Anfragen in einer if/else-Kaskade nach URL-Pfad und HTTP-Methode unterscheidet und den jeweils passenden Codeblock dazu ausführt. Bei nur zwei, drei möglichen Optionen mag das gerade so noch angehen, aber wenn es mehr werden, verliert man schnell den Überblick.

Obendrein geschieht das alles in einer einzigen Methode, und zwar der Klasse http_worker, die verantwortlich für das Abwickeln sämtlicher Verbindungen zeichnet. Auf einem hochauflösenden Monitor im Hochkantformat kann man den Code der Klasse nur bei einem Schriftgrad von 5 Punkt komplett sehen, was für sich schon ein Grund ist, die Schere anzusetzen, um den einen oder anderen Codeschnipsel woanders hinzuschieben. Schwerer wiegt jedoch, dass der http_worker funktional undurchsichtig ist, weil er gleich drei fundamentale Aufgaben erledigt: Anfragen annehmen, routen und behandeln.

Mehr zu Webentwicklung

Die Definition des Routings, also welcher Endpunkt welche Aktion auslösen soll, ist an zentraler Stelle viel besser aufgehoben: in der main()-Funktion des Webservice, dort wo auch die http_worker, deren Threads und der I/O-Kontext ins Leben gerufen werden. Und sämtliche Aktionen gliedert man sinnvollerweise als Handler-Funktionen in eine oder mehrere Dateien aus. Wenn man dann dem http_worker die Routing-Informationen mitgibt, muss der in seiner Methode process_request() nur noch den Router mit der Weiterleitung der Anfrage beauftragen, aber nicht mehr selbst darüber entscheiden.

Das war die Leseprobe unseres heise-Plus-Artikels "Webservices mit C++: Routing von Anfragen". Mit einem heise-Plus-Abo können sie den ganzen Artikel lesen und anhören.